package com.songshuai.sales.tool.service.impl;

import com.songshuai.sales.tool.dao.base.YixueBaseServiceItemMapper;
import com.songshuai.sales.tool.dto.request.service.item.AddServiceItemReqDto;
import com.songshuai.sales.tool.dto.request.service.item.QueryServiceItemsReqDto;
import com.songshuai.sales.tool.dto.request.service.item.UpdateServiceItemReqDto;
import com.songshuai.sales.tool.dto.response.service.item.ServiceItemsResDto;
import com.songshuai.sales.tool.model.base.YixueBaseServiceItem;
import com.songshuai.sales.tool.service.YixueBaseServiceItemService;
import com.songshuai.webapi.baseapi.constant.BaseConstant;
import com.songshuai.webapi.baseapi.pojo.BaseParmDto;
import com.songshuai.webapi.baseapi.utils.PropertiesUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;


/**
 * 此类为[基础代码]自动生成,已经拥有基本的增删改成操作 
 * <其他请自行扩展>
 * @Author: 刘汉轩
 * @Date: 2019-04-09 13:41:33
 * 
 */
@Service
public class YixueBaseServiceItemServiceImpl extends BaseServiceImpl implements YixueBaseServiceItemService {
 
      
    @Autowired
	private YixueBaseServiceItemMapper yixueBaseServiceItemMapper;
	
	
	/**
     * 新增
     * @param entity 
     */
    public int insertSelective (YixueBaseServiceItem entity) {
        return this.yixueBaseServiceItemMapper.insertSelective(entity);
    }	
    
    /**
     * 批量新增
     * @param list 
     */
    public void insertBatch(List<YixueBaseServiceItem> list) {       
        this.yixueBaseServiceItemMapper.insertBatch(list); 
    }
    
    /**
     * 根据主键修改单条数据
     * @param entity 
     */
    public int updateByPrimaryKey(YixueBaseServiceItem entity) {
        return this.yixueBaseServiceItemMapper.updateByPrimaryKey(entity);
    }
    
    /**
     * 根据主键批量修改数据
     * @param list 
     */
    public void updateBatch(List<YixueBaseServiceItem> list) {      
        this.yixueBaseServiceItemMapper.updateBatch(list);     
    }
    
    /**
     * 根据主键查询单条数据
     * @param id
     */
    public YixueBaseServiceItem selectByPrimaryKey(Integer id) {
        return this.yixueBaseServiceItemMapper.selectByPrimaryKey(id);
    }
    
    /**
     * 根据条件查询单条记录
     * @param entity 
     */
    public YixueBaseServiceItem selectByEntity(YixueBaseServiceItem entity) {
        return this.yixueBaseServiceItemMapper.selectByEntity(entity);
    }
      
    /**
     * 根据条件查询多条记录
     * @param entity 
     */
    public List<YixueBaseServiceItem> selectByEntityList(YixueBaseServiceItem entity) {
        return this.yixueBaseServiceItemMapper.selectByEntityList(entity);
    }
    
    /**
     * 根据条件查询Id
     * @param entity 
     */
    public Integer selectById(YixueBaseServiceItem entity) {
        return this.yixueBaseServiceItemMapper.selectById(entity);
    }
    
    /**
     * 根据条件查询Ids
     * @param entity 
     */
    public List<Integer> selectByIds(YixueBaseServiceItem entity) {
        return this.yixueBaseServiceItemMapper.selectByIds(entity);
    }
    
    /**
     * 根据主键删除单条记录
     * @param id
     */
    public void deleteByPrimaryKey(Integer id) {
        this.yixueBaseServiceItemMapper.deleteByPrimaryKey(id);
    }
    
    /**
     * 根据主键删除多条记录
     * @param list
     */
    public void deleteBatch(List<Integer> list) {
        this.yixueBaseServiceItemMapper.deleteBatch(list);
    }
    
    /**
     * 根据某些条件删除
     * @param entity
     */
    public void deleteByEntity(YixueBaseServiceItem entity) {
        this.yixueBaseServiceItemMapper.deleteByEntity(entity);
    }


    /**
     * 分页查询服务列表
     * @param request
     * @return
     */
    public List<ServiceItemsResDto> queryServiceItemPage(BaseParmDto<QueryServiceItemsReqDto> request) {
        return yixueBaseServiceItemMapper.queryServiceItemPage(request.getParam().getItemName(),request.getParam().getTypeId(),request.getSortBy());
    }


    /**
     * 新增
     * @param reqDto
     * @return
     */
    public Boolean addServiceItems(AddServiceItemReqDto reqDto) {
        YixueBaseServiceItem entity = new YixueBaseServiceItem();
        PropertiesUtil.copyProperties(reqDto,entity);
        entity.setTypeid(reqDto.getTypeId());
        Date date = new Date();
        Integer userId = Integer.parseInt(getCurrentUser().getUserId());
        entity.setIsdelete(BaseConstant.IS_DELETE_FLAG_NO);
        entity.setCreateTime(date);
        entity.setCreateBy(userId);
        entity.setUpdateTime(date);
        entity.setUpdateBy(userId);
        return yixueBaseServiceItemMapper.insertSelective(entity)>0;
    }


    /**
     * 修改
     * @param reqDto
     * @return
     */
    public Boolean updateServiceItems(UpdateServiceItemReqDto reqDto) {
        Date date = new Date();
        Integer userId = Integer.parseInt(getCurrentUser().getUserId());
        YixueBaseServiceItem entity = new YixueBaseServiceItem();
        PropertiesUtil.copyProperties(reqDto,entity);
        entity.setTypeid(reqDto.getTypeId());
        entity.setUpdateTime(date);
        entity.setUpdateBy(userId);
        return yixueBaseServiceItemMapper.updateByPrimaryKey(entity)>0;
    }



    @Override
    public Integer queryServiceItemNumByTypeId(Integer typeId) {
        return yixueBaseServiceItemMapper.queryServiceItemNumByTypeId(typeId);
    }
}